import { activeEffect } from "./effect";

// 表里每一个key都是一个普通对象  对应自身的desMap
export let targetMap = {};
export const track = (target, key) => {
  if (!activeEffect) return;
  // 获取当前对象依赖图
  let depsMap = targetMap.get(target);
  if (!depsMap) {
    targetMap.set(target, (depsMap = new Map()));
  }
  // 根据key从依赖图获取到effect集合
  let dep = depsMap.get(key);
  if (!dep) {
    dep.set(key, (dep = new Set()));
  }
  // 当前effect在注册表中不存在,执行注册操作
  if (!dep.has(activeEffect)) {
    dep.add(activeEffect);
  }
};
